import sqlite3

# 实用技巧 with(上下文管理器)
# with sqlite3.connect('mydatabase.db') as conn:
#     cursor = conn.cursor()
#     # 执行各种操作
#     # 不需要手动commit或close，退出with块会自动处理


# 1. 连接数据库（若不存在，则创建一个新的数据库文件）
conn = sqlite3.connect('test.db')

# 2. 创建游标
cursor = conn.cursor()

# 3. 执行SQL语句
# 3.1 创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    password varchar(20)
)
''')

conn.commit()
# # 3.2 插入数据
#  execute()方法 插入一条数据
cursor.execute(
    "insert into users (name,password) values (?,?)",
    ('张三', 123456)
)
conn.commit()

# executemany()方法 插入多条数据
cursor.executemany(
    "insert into users (name,password) values (?,?)",
    [
        ('李四', 123457),
        ('王五', 123458),
        ('赵六', 123459)
    ]
)
conn.commit()

# 3.3 查询数据
cursor.execute("select * from users")
print(cursor.fetchall())

# 获取列名
cursor.execute("SELECT * FROM users")
col_names = [description[0] for description in cursor.description]
print(col_names)  # 输出: ['id', 'name', 'age', 'email']


# 4. 关闭连接
cursor.close()
conn.close()